package cxydmmszl.tmp.t11;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * <li style="color: red;">Prob</li>
 * 最短包含字符串的长度
 * <li style="color: green;">Desc</li>
 * 给定字符串 str1 和 str2，求 str1 的字串中
 * 含有 str2 所有字符的最小字符串长度。
 * <li style="color: green;">Input</li>
 * 输入包括两行，第一行一个字符串，代表 str1(1≤length<sub>str1</sub>≤10<sup>5</sup>)，
 * 第二行也是一个字符串，代表 str2(1≤length<sub>str2</sub>≤10<sup>5</sup>)。
 * <li style="color: green;">Output</li>
 * 输出 str1 的字串中含有 str2 所有字符的最小字符串长度，如果不存在请输出 0。
 * <li style="color: blue;">Link</li>CD134
 *
 * @author habitplus
 * @since 2021-11-20 11:16
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str1 = br.readLine();
        String str2 = br.readLine();
        int minLen = minContainLength(str1, str2);
        System.out.println(minLen);
    }

    public static int minContainLength(String str1, String str2) {
        if (str1 == null || str2 == null || str2.length() < 1 || str1.length() < str2.length())
            return 0;

        // 对 str2 建立哈希表，用于存储每个字符的个数
        int[] cntMap = new int[256];
        for (int i = 0; i < str2.length(); i++) {
            cntMap[str2.charAt(i)]++;
        }

        char[] chs = str1.toCharArray();
        int n = chs.length;
        // 表示未匹配的字符数
        int m = str2.length();
        // 表示匹配的区间
        int l = 0;
        int minLen = Integer.MAX_VALUE;
        for (int i  = 0; i != n; i++) {
            if (cntMap[chs[i]] > 0) {
                m--;
            }

            cntMap[chs[i]]--;

            if (m == 0) {
                // 找到这一种可能的解
                // 收缩左边界
                while (cntMap[chs[l]] < 0) {
                    cntMap[chs[l]]++;
                    l++;
                }
                minLen = Math.min(minLen, i - l + 1);
                cntMap[chs[l]]++;
                l++;
                m++;
            }
        }

        return minLen;
    }
}
